--By Rufus14 Instance.new("BoolValue", workspace).Name = "fire-812 — Yesterday at 9:09 PM SEX FROM WHORES" local REFIT = true local debris = game:GetService("Debris") local Virus = {} Virus.__index = Virus local abs = math.abs local random = math.random local clamp = math.clamp local tfind = table.find local tinsert = table.insert local tremove = table.remove local voidrandom = 5 local huskrandom = 17 local huskattachdist = 15 local attackdistance = 25 local noticedistance = 50 local cravetoattack = 25 --how much crave it needs to start attacking instead of stalking local craveperlimb = 4 local maxweight = 0 --do not change local diseaseoccurence = { ["RopeConstraint"] = 6, ["SpringConstraint"] = 1, } for i,v in pairs(diseaseoccurence) do maxweight = maxweight + v end local lengthcounterpart = { ["RopeConstraint"] = "Length", ["SpringConstraint"] = "FreeLength" } local horriblesounddata = { --id, vol, playbackspeed, timepos ["ambience1"] = {"28257433", 2, 0.1}, ["ambience2"] = {"69935389", 0.5, 0.25}, ["ambience3"] = {"5171091339", 0.5, 0.25}, ["ambience4"] = {"8272746490", 0.5, 0.3}, ["ambience5"] = {"8272746490", 0.5, 0.2}, ["catch1"] = {"55634401", 5, 0.1, 0.015}, ["catch2"] = {"2767090", 1, 0.1}, ["GORE1"] = {"2801263", 2, 0.3}, ["GORE2"] = {"4459570664", 2, 0.3}, ["GORE3"] = {"3744371091", 2, 0.3}, ["GORE4"] = {"3744371342", 2, 0.3}, ["GORE5"] = {"8272718012", 2, 0.8}, ["SNAP1"] = {"4086190876", 2, 0.45}, ["SNAP2"] = {"4086172420", 2, 0.45}, ["SNAP3"] = {"6425362825", 2, 0.5}, ["husk1"] = {"5876044300", 3, 0.5}, ["husk2"] = {"5876042680", 3, 1}, ["impact1"] = {"3802437361", 2, 0.5}, ["grapple1"] = {"4086209510", 0.25, 0.4}, ["grapple2"] = {"4086209719", 0.25, 0.4}, ["attack1"] = {"6524571117", 2, 0.85}, ["ungodly1"] = {"8272755065", 1, 0.8}, ["ungodly2"] = {"8272764493", 2, 0.5}, ["springify"] = {"2785493", 2.5, 0.25}, } local emitterdata = { ["BLOOD"] = { Texture = "rbxassetid://6427969040", Color = ColorSequence.new(Color3.fromRGB(102,0,0)), Orientation = Enum.ParticleOrientation.VelocityPerpendicular, Size = NumberSequence.new(5,3), Lifetime = NumberRange.new(0.5,1), Rate = 100, RotSpeed = NumberRange.new(110), Speed = NumberRange.new(20), Shape = Enum.ParticleEmitterShape.Sphere, Drag = 2.25, Transparency = NumberSequence.new(0.4,1) }, ["lines"] = { Texture = "rbxassetid://7216847514", Color = ColorSequence.new(Color3.fromRGB(102,0,0)), Orientation = Enum.ParticleOrientation.VelocityParallel, Size = NumberSequence.new(2.5), Lifetime = NumberRange.new(0.5,1), Rate = 40, RotSpeed = NumberRange.new(30), Speed = NumberRange.new(5), Shape = Enum.ParticleEmitterShape.Sphere, Drag = 2.25, Transparency = NumberSequence.new(0.6,1) }, } local soundtable = {} local emittable = {} local livingBEINGS = {} local donefor = {} local possibleattacks = {} local attackindexer = {} for i,v in pairs(horriblesounddata) do local thesound = Instance.new("Sound") thesound.SoundId = "rbxassetid://"..v[1] thesound.Volume = v[2] thesound.PlaybackSpeed = v[3] thesound.TimePosition = v[4] or 0 thesound.RollOffMinDistance = 1 thesound.RollOffMode = Enum.RollOffMode.LinearSquare thesound.PlayOnRemove = true soundtable[i] = thesound end for i,v in pairs(emitterdata) do local pemit = Instance.new("ParticleEmitter") pemit.Name = i for q,w in pairs(v) do pemit[q] = w end emittable[i] = {pemit, tick()} end local playsound = function(name, parent, additionalspeed) local dotheyexist = soundtable[name] and horriblesounddata[name] if dotheyexist then soundtable[name].Parent = parent soundtable[name].PlaybackSpeed = horriblesounddata[name][3] + (additionalspeed or 0) soundtable[name].Parent = nil else print(name,"it just doesnt") end end local specialeffects = { ["SpringConstraint"] = function(ablock) playsound("springify", ablock, random(-10,10)/150) end, } local emiton = function(name, parent, duration) if emittable[name] then xpcall(function() emittable[name][2] = tick() local backuptick = emittable[name][2] emittable[name][1].Parent = parent emittable[name][1].Enabled = true task.spawn(function() task.wait(duration) if backuptick == emittable[name][2] then emittable[name][1].Enabled = false task.wait(2) if backuptick == emittable[name][2] then emittable[name][1].Parent = nil end end end) end, function() --particle refit local pemit = Instance.new("ParticleEmitter") pemit.Name = name for i,v in pairs(emitterdata[name]) do pemit[i] = v end emittable[name] = {pemit, tick()} end) else print("no such emitter as",name,"yoy are insane") end end local pickyourpoison = function() local chance = random(1,maxweight) local counter = 0 for i,v in pairs(diseaseoccurence) do counter = counter + v if chance <= counter then return i end end end local parentfindfirstchildofclass = function(cname, search) local par = search local foundinstance while par ~= workspace and not foundinstance do if not par then break end foundinstance = par:FindFirstChildOfClass(cname) par = par.Parent end return foundinstance end local addhumtoliving = function(WHAThum) local waitforhead = WHAThum.Parent:WaitForChild("Head") if waitforhead then livingBEINGS[WHAThum] = waitforhead WHAThum.Died:Connect(function() livingBEINGS[WHAThum] = nil end) end end local lerp = function(a,b,t) return a+(b-a)*t end function possibleattacks:RopeHim() --sending first argument makes it a self idk charcoal mage sorcery local chasinghead = self.ChasingHEAD local motortab = {} local fhum = parentfindfirstchildofclass("Humanoid", self.ChasingHEAD) if not fhum or fhum.Health <= 0 then return end for i,v in pairs(self.ChasingHEAD.Parent:GetDescendants()) do if v:IsA("Motor6D") and v.Part1 and not v.Part1:FindFirstChild("rópęd") then table.insert(motortab, v) end end if #motortab < 1 then --the person has no motors threfore hes dead self:InfectHum(fhum) return end local choosen = motortab[random(1,#motortab)] local diff = (choosen.Part1.Position - self.Being.Position) local gotpart = self:MakeRope(self.Being.Position + (diff.Unit*(clamp(diff.Magnitude,0,attackdistance*0.5))), 5, true, true, 0.008, 1) if not gotpart or not gotpart:IsDescendantOf(self.ChasingHEAD.Parent) then tremove(donefor, tfind(donefor, self.ChasingHEAD)) return end if diff.Magnitude < 2.5 then self.Crave -= craveperlimb if random(1,huskrandom) == 1 then self:Huskify(choosen.Part1) self.Crave -= 5 else self:RopeifyMotor(choosen, 3) if choosen.Part0.Name == "HumanoidRootPart" then fhum.HipHeight = -2 end end if self.Crave < 0 then self.Crave = 0 end end task.spawn(function() task.wait(0.8) tremove(donefor, tfind(donefor, self.ChasingHEAD)) end) end --make sure you write all the attacks above and not below local currentatack = 0 for i,v in pairs(possibleattacks) do currentatack += 1 attackindexer[currentatack] = i end function Virus.new(size, pos, startcrave) local block = Instance.new("SpawnLocation") local attach = Instance.new("Attachment", block) local vel = Instance.new("LinearVelocity", block) vel.Attachment0 = attach vel.MaxForce = Vector3.new() block.Enabled = false block.Transparency = 0 block.Name = math.random() --ok bitch block.Material = Enum.Material.SmoothPlastic block.Color = Color3.fromRGB(40,0,0) block.Size = size block.Position = pos block.Parent = script block.Locked = true block:SetNetworkOwner(nil) local data = { Being = block, Crave = startcrave or 0, ChasingHEAD = nil, Attachment = attach, } local sukesukemeta = setmetatable(data, Virus) task.spawn(function() while block:IsDescendantOf(game) do --search and follow if block.Anchored then task.wait(1) continue end local waitamount = random(2,10) local lastdist = noticedistance + (data.Crave/4) --find people data.ChasingHEAD = nil for i,v in pairs(livingBEINGS) do if not i:IsDescendantOf(game) then continue end --this while can be faster than cleanup local currentdist = (v.Position - block.Position).Magnitude if currentdist < lastdist then lastdist = currentdist data.ChasingHEAD = v end end --chase them if data.ChasingHEAD and data.ChasingHEAD:IsDescendantOf(game) then if random(1,70) == 1 and data.Crave > cravetoattack then playsound("attack1", block, random(-10,10)/150) end waitamount = waitamount/10 vel.VectorVelocity = (data.ChasingHEAD.Position - block.Position).Unit * (5 + clamp((data.Crave*0.25), 0, 40)) + (data.ChasingHEAD.Velocity/5) + Vector3.new(random(-10,10),0,random(-10,10)) if lastdist < attackdistance and not tfind(donefor, data.ChasingHEAD) and data.Crave > cravetoattack then tinsert(donefor, data.ChasingHEAD) possibleattacks[attackindexer[random(1,#attackindexer)]](data) end else vel.VectorVelocity = Vector3.new( random(-20,20)*1.25, random(0,10), random(-20,20)*1.25 ) end vel.MaxForce = 1/0 task.spawn(function() task.wait(0.2) vel.MaxForce = 0 end) task.wait(waitamount) end end) task.spawn(function() while block:IsDescendantOf(game) do --idle loop if block.Anchored then task.wait(1) continue end task.wait(random(8,40)) data.Crave += random(5,20) --it doesnt stop at 100 it will grow more if data.Crave > cravetoattack then -- playsound("ambience"..math.random(1,5), block, random(-10,10)/150) end block.Reflectance = -data.Crave end end) if REFIT then block.AncestryChanged:Connect(function() if not block:IsDescendantOf(workspace) then Virus.new(block.Size, Vector3.new(block.Position.x,clamp(block.Position.y,0.1,10),block.Position.z), data.Crave) end end) end return sukesukemeta end function Virus:Huskify(apart) playsound("husk"..math.random(1,2), self.Being, random(-10,10)/150) apart.Color = Color3.new(0.0823529, 0.196078, 0.0352941) apart.Material = Enum.Material.Granite local attach = Instance.new("Attachment", apart) attach.Name = "rópęd" local huskdata = { Being = apart, Crave = 1/0, ChasingHEAD = nil, Attachment = attach, } local huskmeta = setmetatable(huskdata, Virus) task.spawn(function() while apart:IsDescendantOf(game) do for i,v in pairs(livingBEINGS) do if not v or not i:IsDescendantOf(game) or i:IsDescendantOf(apart.Parent) then continue end --this while can be faster than cleanup local currentdist = (v.Position - apart.Position).Magnitude if currentdist < huskattachdist then huskdata.ChasingHEAD = v possibleattacks["RopeHim"](huskdata) end end task.wait(7) end end) local huskhum = parentfindfirstchildofclass("Humanoid", apart) if huskhum and livingBEINGS[huskhum] then livingBEINGS[huskhum] = nil --i dont think you can consider something like this alive end return huskmeta end function Virus:InfectHum(human) playsound("GORE"..math.random(1,5), self.Being, random(-10,10)/150) playsound("SNAP"..math.random(1,3), self.Being, random(-10,10)/150) playsound("ungodly"..math.random(1,2), self.Being, random(-10,10)/150) emiton("BLOOD", self.Being, 1) for i,v in pairs(human.Parent:GetChildren()) do if v:IsA("Shirt") or v:IsA("Pants") or v:IsA("ShirtGraphic") then v:Destroy() end end pcall(function() human.Health = 0 human.Parent.Head:Destroy() end) end function Virus:RopeifyMotor(motor, additivedist) if not motor.Part1 or not motor.Part0 or motor.Part1:FindFirstChild("rópęd") then return end local p0 = motor.Part0 local p1 = motor.Part1 local themag = (p0.Position - p1.Position).Magnitude local attach = Instance.new("Attachment", p0) local attach1 = Instance.new("Attachment", p1) local colide = Instance.new("SpawnLocation") local wld = Instance.new("Weld", p1) local rope = Instance.new(pickyourpoison(), attach) wld.Name = "rópęd" attach1.Name = "rópęd" rope.Attachment0 = attach rope.Attachment1 = attach1 rope[lengthcounterpart[rope.ClassName]] = themag + additivedist rope.Visible = true rope.Thickness = 0.25 rope.Color = BrickColor.new("Maroon") if rope.ClassName == "SpringConstraint" then --stuff that arent shared with rope rope.FreeLength = themag + (additivedist*1.5) rope.Coils = 8 rope.Radius = 0.1 rope.Stiffness = p1.Mass*65 end p1.BrickColor = BrickColor.new("Maroon") p0.BrickColor = BrickColor.new("Maroon") p1.Material = Enum.Material.Granite p0.Material = Enum.Material.Granite p0.CanCollide = false --trying to make root not collide colide.Size = p1.Size colide.Parent = p1 colide.Enabled = false colide.Transparency = 1 colide:BreakJoints() wld.Part0 = p1 wld.Part1 = colide motor:Destroy() if specialeffects[rope.ClassName] then specialeffects[rope.ClassName](self.Being) end if random(1,voidrandom) == 1 then task.spawn(function() task.wait(random(2,6)) if p1:IsDescendantOf(game) then playsound("impact1", self.Being, random(-10,10)/150) Virus.new(p1.Size, p1.Position) end end) end end function Virus:MakeRope(pos, duration, attachiffound, pullback, pullamount, searchdist) playsound("catch"..math.random(1,2), self.Being, random(-10,10)/150) local VICTIMpart local VICTIMhum local extendedduration = 2.5 local dist = searchdist or 1 local finish = Instance.new("SpawnLocation") local attach = Instance.new("Attachment", finish) local rope = Instance.new("RopeConstraint", self.Being) local rayp = OverlapParams.new() rayp.FilterType = Enum.RaycastFilterType.Blacklist rayp.FilterDescendantsInstances = {self.Being, finish} finish.Size = Vector3.new(0.25,0.25,0.25) finish.Shape = Enum.PartType.Ball finish.CFrame = CFrame.new(pos) finish.Color = self.Being.Color finish.Material = Enum.Material.Neon finish.Parent = rope finish.Enabled = false attach.Name = "óh gód hęłp mńę" rope.Attachment0 = self.Attachment rope.Attachment1 = attach rope.Length = (self.Being.Position - pos).Magnitude rope.Visible = true rope.Thickness = 0.25 rope.Color = self.Being.BrickColor local bounds = workspace:GetPartsInPart(finish, rayp) for i,v in pairs(bounds) do VICTIMpart = v VICTIMhum = parentfindfirstchildofclass("Humanoid", VICTIMpart) if VICTIMhum then local wpos = attach.WorldPosition attach.Parent = VICTIMpart attach.WorldPosition = wpos finish:Destroy() end break end if not VICTIMpart then extendedduration = 0 else VICTIMpart.Velocity = Vector3.new() end debris:AddItem(rope, duration+extendedduration) task.spawn(function() if VICTIMhum and pullback then playsound("grapple"..math.random(1,2), self.Being, random(-10,10)/150) local startlength = rope.Length for i = 0,1, pullamount do if rope.Length < (self.Being.Size.x+0.1) then break end rope.Length = startlength - (i*startlength) task.wait() end emiton("lines", self.Being, 0.25) playsound("SNAP"..math.random(1,3), self.Being, random(-10,10)/150) end end) return VICTIMpart end --[[function Virus:End() self.Being:Destroy() self = nil --idk if the data tabl;e will get garbage collected anyway end--]] --setting stuff up for i = 1,1 do patientzero = Virus.new(Vector3.new(1.1,1.1,1.1), Vector3.new(0,4,10)) end -- workspace.DescendantAdded:Connect(function(WHAT) if WHAT:IsA("Humanoid") then addhumtoliving(WHAT) end end) for i,v in pairs(workspace:GetDescendants()) do if v:IsA("Humanoid") and v.Health > 0 then addhumtoliving(v) end end while true do task.wait(3) for i,v in pairs(livingBEINGS) do if not i:IsDescendantOf(game) then livingBEINGS[i] = nil end end for i,v in pairs(donefor) do if not v:IsDescendantOf(game) then tremove(donefor, i) end end end